{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "6098414a",
   "metadata": {},
   "source": [
    "### 1.knn的算法步骤\n",
    "\n",
    "1. 准备数据，对数据进行预处理;\n",
    "2. 计算测试数据与各个训练数据之间的距离；\n",
    "3. 按照距离的递增关系进行排序；\n",
    "4. 选取距离最小的k个点；\n",
    "5. 确定前k个点所在类别的出现频率；\n",
    "6. 返回前k个点中出现频率最高的类别作为测试数据的预测分类"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9ed99165",
   "metadata": {},
   "source": [
    "### 2.生成数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "47086f87",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# data generation (FIXME: feature name not good)\n",
    "#x1\\x2表示维度、y表示标签\n",
    "np.random.seed(314)#如果有seed每次生成的随机数是一样的，方便演示\n",
    "data_size_1 = 300\n",
    "#np.random.normal表示生成正态分布随机数，scale是标准差，loc是均值也即中心\n",
    "x1_1 = np.random.normal(loc=5.0, scale=1.0, size=data_size_1)#location and scale\n",
    "x2_1 = np.random.normal(loc=4.0, scale=1.0, size=data_size_1)\n",
    "y_1 = [0 for _ in range(data_size_1)]#让数据集1里面所有的元素都有0的标签\n",
    "\n",
    "data_size_2 = 400\n",
    "x1_2 = np.random.normal(loc=10.0, scale=2.0, size=data_size_2)\n",
    "x2_2 = np.random.normal(loc=8.0, scale=2.0, size=data_size_2)\n",
    "y_2 = [1 for _ in range(data_size_2)]\n",
    "\n",
    "#然后对两个维度进行拼接\n",
    "x1 = np.concatenate((x1_1, x1_2), axis=0)\n",
    "x2 = np.concatenate((x2_1, x2_2), axis=0)#表示拼接，axis表示拼接数组的维度\n",
    "x = np.hstack((x1.reshape(-1,1), x2.reshape(-1,1)))\n",
    "y = np.concatenate((y_1, y_2), axis=0)\n",
    "\n",
    "data_size_all = data_size_1+data_size_2\n",
    "shuffled_index = np.random.permutation(data_size_all)#排列组合，把集合里面的数打散\n",
    "x = x[shuffled_index]\n",
    "y = y[shuffled_index]\n",
    "\n",
    "split_index = int(data_size_all*0.7)#分出训练集和测试集，训练集占70%\n",
    "x_train = x[:split_index]\n",
    "y_train = y[:split_index]\n",
    "x_test = x[split_index:]\n",
    "y_test = y[split_index:]\n",
    "\n",
    "\n",
    "# visualize data\n",
    "plt.scatter(x_train[:,0], x_train[:,1], c=y_train, marker='.')\n",
    "plt.title(\"train data\")\n",
    "plt.show()\n",
    "plt.scatter(x_test[:,0], x_test[:,1], c=y_test, marker='.')\n",
    "plt.title(\"test data\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "01bc8549",
   "metadata": {},
   "source": [
    "### 3.代码实现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "89fbd038",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import operator\n",
    "\n",
    "def knn_distance(v1, v2):#求平方和，只关注大小，没有开根号\n",
    "    return np.sum(np.square(v1-v2))\n",
    "\n",
    "def knn_vote(ys):\n",
    "    vote_dict = {}#list can also be applied, but another approach\n",
    "    \n",
    "    for y in ys:#ys就是得到的最近的k个点，vote就是看这些点中有多少是0多少是1\n",
    "        if y not in vote_dict.keys():#第一次出现\n",
    "            vote_dict[y] = 1\n",
    "        else:#已经出现过就再投一票\n",
    "            vote_dict[y] += 1\n",
    "    sorted_vote_dict = sorted(vote_dict.items(), \\\n",
    "                              #key=operator.itemgetter(1), \\\n",
    "                              key=lambda x:x[1], \\\n",
    "                              reverse=True)#从大到小排序，sorted可以对任何可迭代的对象排序，不止list\n",
    "    return sorted_vote_dict[0][0]\n",
    "    \n",
    "def knn_predict(x, train_x, train_y, k=3):\n",
    "    #计算并存储测试点和所有点之间的距离\n",
    "    dist_arr = [knn_distance(x, train_x[j]) for j in range(len(train_x))]\n",
    "    sorted_index = np.argsort(dist_arr)#排序，返回的是从大到小的下标\n",
    "    top_k_index = sorted_index[:k]\n",
    "    ys=train_y[top_k_index]\n",
    "    return knn_vote(ys)\n",
    "    \n",
    "\n",
    "#a = knn_predict(x_train[0], x_train, y_train)\n",
    "\n",
    "y_train_est = [knn_predict(x_train[i], x_train, y_train) for i in range(len(x_train))]\n",
    "print(y_train_est)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "008e7f2e",
   "metadata": {},
   "source": [
    "ps：只要是arg开头都是用的下标 argsort argmax argmin"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "3f711c75",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2 1 0 3]\n",
      "[2 1]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "print(np.argsort([0.24267075 ,0.0782095 ,0.02383509,4.22824171]))\n",
    "a=np.argsort([0.24267075 ,0.0782095 ,0.02383509,4.22824171])\n",
    "print(a[:2])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "55b8949a",
   "metadata": {},
   "source": [
    "### 4. sklearn approach"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9a69567b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Feature dimensions:  (1797, 64)\n",
      "Label dimensions:    (1797,)\n"
     ]
    }
   ],
   "source": [
    "#% matplotlib inline\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn import datasets, neighbors, linear_model\n",
    "\n",
    "# load data\n",
    "digits = datasets.load_digits()\n",
    "X_digits = digits.data\n",
    "y_digits = digits.target\n",
    "\n",
    "print(\"Feature dimensions: \", X_digits.shape)\n",
    "print(\"Label dimensions:   \", y_digits.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7a0f93d1",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot sample images\n",
    "nplot = 10\n",
    "fig, axes = plt.subplots(nrows=1, ncols=nplot)\n",
    "\n",
    "for i in range(nplot):\n",
    "    img = X_digits[i].reshape(8, 8)\n",
    "    axes[i].imshow(img)\n",
    "    axes[i].set_title(y_digits[i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ab7c131b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "KNN score: 0.953661\n",
      "LogisticRegression score: 0.927711\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/freddy/anaconda3/lib/python3.8/site-packages/sklearn/linear_model/_logistic.py:763: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n"
     ]
    }
   ],
   "source": [
    "# split train / test data\n",
    "n_samples = len(X_digits)\n",
    "n_train = int(0.4 * n_samples)\n",
    "\n",
    "X_train = X_digits[:n_train]\n",
    "y_train = y_digits[:n_train]\n",
    "X_test = X_digits[n_train:]\n",
    "y_test = y_digits[n_train:]\n",
    "# do KNN classification\n",
    "knn = neighbors.KNeighborsClassifier()\n",
    "logistic = linear_model.LogisticRegression()\n",
    "\n",
    "print('KNN score: %f' % knn.fit(X_train, y_train).score(X_test, y_test))\n",
    "print('LogisticRegression score: %f' % logistic.fit(X_train, y_train).score(X_test, y_test))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
